{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'afdd 9 eta 7'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "def convert_func(matchobj):\n",
    "    m =  matchobj.group(0)\n",
    "    return \"\".join(list(reversed(m)))\n",
    "\n",
    "line = \"7 ate 9 ddfa\"\n",
    "new_line =  re.sub(\"[\\w\\W]+\", convert_func, line)\n",
    "new_line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'gfed-cba'"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def myReverse(S: str):\n",
    "    line1 = list(S)\n",
    "    line2 = list(reversed(S))\n",
    "    i1 = 0\n",
    "    i2 = 0\n",
    "    r = []\n",
    "    while i1 < len(line1):\n",
    "        e1 = line1[i1]\n",
    "        if e1.isalpha():\n",
    "            i2Temp = i2\n",
    "            while i2Temp < len(line2):\n",
    "                e2 = line2[i2Temp]\n",
    "                if e2.isalpha():\n",
    "                    r.append(e2)\n",
    "                    i2 = i2Temp + 1\n",
    "                    break\n",
    "                i2Temp += 1\n",
    "        else:\n",
    "            r.append(e1)\n",
    "        i1 += 1\n",
    "    return \"\".join(r)\n",
    "\n",
    "\n",
    "myReverse(\"abcd-efg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://leetcode.com/problems/reverse-only-letters/\n",
    "\n",
    "\n",
    "Runtime: 32 ms, faster than 57.83% of Python3 online submissions for Reverse Only Letters.\n",
    "Memory Usage: 14.2 MB, less than 30.95% of Python3 online submissions for Reverse Only Letters.\n",
    "\n",
    "\n",
    "```python\n",
    "def myReverse(S: str):\n",
    "    line1 = list(S)\n",
    "    line2 = list(reversed(S))\n",
    "    i1 = 0\n",
    "    i2 = 0\n",
    "    r = []\n",
    "    while i1 < len(line1):\n",
    "        e1 = line1[i1]\n",
    "        if e1.isalpha():\n",
    "            i2Temp = i2\n",
    "            while i2Temp < len(line2):\n",
    "                e2 = line2[i2Temp]\n",
    "                if e2.isalpha():\n",
    "                    r.append(e2)\n",
    "                    i2 = i2Temp + 1\n",
    "                    break\n",
    "                i2Temp += 1\n",
    "        else:\n",
    "            r.append(e1)\n",
    "        i1 += 1\n",
    "    return \"\".join(r)\n",
    "\n",
    "\n",
    "class Solution:\n",
    "    def reverseOnlyLetters(self, S: str) -> str:\n",
    "        return myReverse(S)\n",
    "```\n",
    "\n",
    "Spent 20 minutes, 2 shoot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
